Modern networking applications require transfer of large amounts of data. Over time, the need transfer large amounts of data efficiently continues to increase. Traditionally, applications and services requiring reliable transfer of data have relied on transmission control protocol (“TCP”) connections. However, TCP connections require significant overhead, for example in the form of session establishment and maintenance, acknowledgement of each packet, window flow control, duplicate packet retransmission, robust error correction, etc.
TCP was designed to provide reliable delivery over unreliable networks, packet fragmentation, and to ensure flow control between endpoints differing considerably in compute capability. To provide these features, TCP establishes virtual connections carrying unstructured byte streams, buffered transfer, and full duplex communication, and provide congestion control with packet re-transmissions. TCP provides for sliding windows to equalize the ability of a receiver and a sender's capacity or to compensate for packet loss in the network (congestion control and congestion avoidance). Additionally, TCP has evolved many times, continually increasing complexity, for example in its congestion control algorithms. Delay remains a problem for TCP, which is dependent on various computations of Round Trip Time (“RTT”) in measuring when to retransmit after failure to receive acknowledgments. TCP was invented on assumptions of reliability-hostile networks, and provides robustness at a price of complexity, speed, resource usage.
A common alternative transmission method to TCP is user datagram protocol (“UDP”). UDP and other unreliable or connectionless transmission protocols typically result in a much lower-latency connection than TCP, and UDP connections are particularly adapted to situations where some loss of data may be tolerated. A typical unreliable, connectionless protocol may drop data without acknowledgement to a sender or network layer. UDP provided data transmission without the TCP's guarantees against loss, and is typically considered most useful over reliable, low-loss networks such as Local Area Networks (“LANs”), and similar networks, for example networks that share administrative resources.
Web-based application, cloud computing, and other network and Internet based technologies are area frequently requiring transfer of large amounts of data with needs for durability and efficiency. The conventional Web model allows clients to access Web resources (e.g., applications, services and data) via an HTTP client program, such as a Web browser. A technology referred to as Web services has been developed to provide programmatic access to Web resources. Web services may be used to provide programmatic access to Web resources including technology platforms (e.g., applications and services) and data (e.g., product catalogs and other databases) hosted on Web-connected computers such as Web server systems via a Web service interface. Generally speaking, a Web service interface may be configured to provide a standard, cross-platform API (Application Programming Interface) for communication between a client requesting some service to be performed and the service provider. In some implementations, a Web service interface may be configured to support the exchange of documents or messages including information describing the service request and response to that request. Such documents, or messages, may be exchanged using standardized Web protocols, such as the Hypertext Transfer Protocol (HTTP), for example, and may be formatted in a platform-independent data format, such as eXtensible Markup Language (XML), for example. A web services or other provider network may typically be supported by one or more physical and virtual operator-owned data centers.
Operator-owned data centers typically include networks having little congestions, few dropped or lost packets, and relatively uniform storage systems. Similar characteristics may exist within data center clusters, in long-haul transmissions between remote data centers, and between data centers and their content delivery network endpoints, for example. These characteristics make such environments good candidates for applying unreliable, connectionless transmission such as UDP, but for their low tolerance for data loss. Improvements to present data transfer systems and methods are desirable to provide low-latency, low-data-loss transfer of data.
While embodiments are described in this application by way of example for several embodiments and illustrative drawings, those skilled in the art will recognize that embodiments are not limited to the embodiments or drawings described. It should be understood, that the drawings and detailed description thereto are not intended to limit embodiments to the particular form disclosed, but rather, to cover numerous modifications, equivalents, and alternatives falling within the spirit and scope as defined by the appended claims. The headings used in this application are for organizational purposes only and are not meant to be used to limit the scope of the description or the claims. As used throughout this application, the word “may” is used in a permissive sense (i.e., meaning having the potential to), rather than the mandatory sense (i.e., meaning must). Similarly, the words “include”, “including”, and “includes” mean including, but not limited to.